跳到主要内容

MinIO 运维命令速查

使用说明​

三件事先说清楚:

  • ALIAS 是 mc alias set 注册的集群别名,下文统一用 cluster 指代;测试环境常用 local。
  • BUCKET 是桶名,PREFIX/ 是前缀(看着像目录的那个东西)。
  • 带 --force、--dangerous、--versions 的命令都有破坏性,执行前先 mc ls --recursive 确认范围。

命令的完整参数和踩坑记录见博客 MinIO 运维日常:mc 命令实战笔记,本篇只做速查。

桶与对象​

操作命令
建桶mc mb cluster/BUCKET
幂等建桶mc mb cluster/BUCKET --ignore-existing
删空桶mc rb cluster/BUCKET
强制删桶及内容mc rb --force --dangerous cluster/BUCKET
列桶mc ls cluster
看桶属性与对象数mc stat cluster/BUCKET
递归列对象mc ls --recursive cluster/BUCKET
列对象(含版本)mc ls --versions cluster/BUCKET/PREFIX/
上传单文件mc cp ./file cluster/BUCKET/PREFIX/
递归上传目录mc cp --recursive ./dir cluster/BUCKET/PREFIX/
断点续传mc cp --continue ./big.tar.gz cluster/BUCKET/
下载mc cp cluster/BUCKET/file ./
桶间复制mc cp cluster/BUCKET/a cluster/ARCHIVE/a
增量同步mc mirror --overwrite ./dir cluster/BUCKET/
严格镜像(会删目标多余对象)mc mirror --overwrite --remove ./dir cluster/BUCKET/
监听式同步mc mirror --watch ./logs cluster/LOG-BUCKET/
比对两端差异mc diff ./dir cluster/BUCKET/
删单个对象mc rm cluster/BUCKET/file
递归删前缀mc rm --recursive --force cluster/BUCKET/PREFIX/
按时间删mc rm --recursive --force --older-than 30d cluster/BUCKET/PREFIX/
删所有版本mc rm --recursive --force --versions cluster/BUCKET/PREFIX/
看对象元数据mc stat cluster/BUCKET/file
看对象内容mc cat cluster/BUCKET/file
看前 N 行mc head -n 100 cluster/BUCKET/file
看目录占用mc du cluster/BUCKET
按大小查找mc find cluster/BUCKET --larger 100MB
按名字查找mc find cluster/BUCKET --name "*.log"
查找并执行mc find cluster/BUCKET --name "*.tmp" --exec "mc rm {}"

身份与权限​

操作命令
注册别名mc alias set cluster https://s3.example.net AK SK
列出别名mc alias ls
删除别名mc alias remove cluster
加用户mc admin user add cluster USER PASS
列用户mc admin user list cluster
看用户详情mc admin user info cluster USER
禁用用户mc admin user disable cluster USER
删用户mc admin user remove cluster USER
列内置策略mc admin policy list cluster
看策略内容mc admin policy info cluster POLICY
建自定义策略mc admin policy create cluster POLICY policy.json
绑定策略mc admin policy attach cluster POLICY --user USER
解绑策略mc admin policy detach cluster POLICY --user USER
建服务账号mc admin user svcacct add cluster USER
查匿名策略mc anonymous list cluster
设匿名只读mc anonymous set download cluster/BUCKET
关闭匿名mc anonymous set none cluster/BUCKET
设桶配额mc quota set cluster/BUCKET --size 500GiB
查配额mc quota info cluster/BUCKET

管理命令​

操作命令
集群概况mc admin info cluster
结构化输出mc admin info cluster --json
查看配置mc admin config get cluster
修改配置项mc admin config set cluster KEY=VALUE
重启服务mc admin service restart cluster
停服务mc admin service stop cluster
实时请求跟踪mc admin trace -v cluster
只看错误请求mc admin trace -v --status-code 403 cluster
看锁mc admin top locks cluster
看 API 调用mc admin top api cluster
扫描器状态mc admin scanner status cluster
导出桶配置mc admin cluster bucket export cluster
导出 IAM 配置mc admin cluster iam export cluster
导入桶配置mc admin cluster bucket import cluster bucket-meta.zip
导入 IAM 配置mc admin cluster iam import cluster iam-meta.zip
池重平衡mc admin rebalance start cluster
重平衡进度mc admin rebalance status cluster
退役服务器池mc admin decommission start cluster http://minio5:9000
service stop 与 service restart

mc admin service stop cluster 会把所有节点的服务停掉,分布式环境下等于直接停服,不是只停一个节点。想重启单个节点请登录机器用 systemctl restart minio。

生命周期与版本​

操作命令
开版本控制mc version enable cluster/BUCKET
看版本状态mc version info cluster/BUCKET
暂停版本控制mc version suspend cluster/BUCKET
加过期规则mc ilm rule add cluster/BUCKET --expire-days 90
按前缀过期mc ilm rule add cluster/BUCKET --prefix "tmp/" --expire-days 7
按标签过期mc ilm rule add cluster/BUCKET --tags "type=temp" --expire-days 3
精确日期过期mc ilm rule add cluster/BUCKET --expire-date 2027-01-01
清非当前版本mc ilm rule add cluster/BUCKET --noncurrent-expire-days 30
清删除标记mc ilm rule add cluster/BUCKET --expire-delete-marker
转储到远端层mc ilm rule add cluster/BUCKET --transition-days 30 --storage-class cold
列规则mc ilm rule ls cluster/BUCKET
删规则mc ilm rule rm cluster/BUCKET --id RULE_ID
导出规则mc ilm export cluster/BUCKET > rules.json
导入规则mc ilm import cluster/BUCKET < rules.json
注册转储层mc ilm tier add s3 cluster TIER-NAME --endpoint URL --access-key AK --secret-key SK --bucket BUCKET
列转储层mc ilm tier ls cluster
生命周期是异步的

规则由后台扫描器执行,对象到期后可能延迟数小时才真正删除,容量统计也会滞后。别拿它当「定时任务」精确到分钟用。

监控与排查​

操作命令
健康检查(进程)curl -s -o /dev/null -w '%{http_code}' https://s3.example.net/minio/health/live
健康检查(集群仲裁)curl -s -o /dev/null -w '%{http_code}' https://s3.example.net/minio/health/cluster
集群指标curl -s -H "Authorization: Bearer TOKEN" https://s3.example.net/minio/v2/metrics/cluster
桶指标curl -s -H "Authorization: Bearer TOKEN" https://s3.example.net/minio/v2/metrics/bucket
生成抓取配置mc admin prometheus generate cluster
手工 healmc admin heal --recursive cluster
heal 干跑mc admin heal --dry-run --recursive cluster
深度 healmc admin heal --recursive --scan-mode deep cluster
看离线盘mc admin info cluster | grep -i offline
看服务日志sudo journalctl -u minio -n 100 --no-pager
看内核磁盘报错sudo dmesg -T | grep -iE 'error|reset|failed'
看证书有效期openssl s_client -connect HOST:9000 -servername HOST 2>/dev/null | openssl x509 -noout -dates
看时间同步chronyc tracking

常用组合​

几条高频的「一条命令解决问题」:

# 一屏看清集群是否健康:节点、磁盘、容量
mc admin info cluster

# 找出桶里最大的 10 个对象
mc ls --recursive --json cluster/BUCKET | jq -r '[.size, .key] | @tsv' | sort -rn | head -10

# 统计某天的对象数量(按前缀)
mc ls --recursive --json cluster/BUCKET/2026/10/25/ | jq -s 'length'

# 迁移前的差异检查,输出为空才放心
mc diff cluster/BUCKET backup/BUCKET

# 清理前先确认要删多少
mc ls --recursive cluster/BUCKET/tmp/ | wc -l

# 换盘后确认修复是否完成(关注 failed 计数)
mc admin heal --dry-run --recursive cluster
把频繁排查写成脚本

mc --json 配 jq 是标准玩法。把「检查离线盘数、容量水位、证书剩余天数」写成一个脚本,输出 OK 或具体异常项,接到 cron 和告警里,比每天手工敲命令可靠得多。